ПРИМЕР № 7

«Редактор ТХТ-файла»

Исходный код примера:

package tsn.javase.demo07;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.swing.JFileChooser;
import javax.swing.text.BadLocationException;
import javax.swing.text.PlainDocument;
public class MainForm extends javax.swing.JFrame {
    public MainForm() {
        initComponents();
    }
    @SuppressWarnings("unchecked")
    // //GEN-BEGIN:initComponents
    private void initComponents() {
        jButton1 = new javax.swing.JButton();
        jButton3 = new javax.swing.JButton();
        jScrollPane1 = new javax.swing.JScrollPane();
        jEditorPane1 = new javax.swing.JEditorPane();
        jButton4 = new javax.swing.JButton();
        setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
        setTitle("Редактор TXT-файла");
        setResizable(false);
        getContentPane().setLayout(null);
        jButton1.setText("Очистка");
        jButton1.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jButton1ActionPerformed(evt);
            }
        });
        getContentPane().add(jButton1);
        jButton1.setBounds(240, 360, 110, 23);
        jButton3.setText("Сохранение в файл");
        jButton3.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jButton3ActionPerformed(evt);
            }
        });
        getContentPane().add(jButton3);
        jButton3.setBounds(400, 360, 170, 23);
        jEditorPane1.setFont(new java.awt.Font("Tahoma", 0, 14)); // NOI18N
        jScrollPane1.setViewportView(jEditorPane1);
        getContentPane().add(jScrollPane1);
        jScrollPane1.setBounds(10, 10, 560, 340);
        jButton4.setText("Загрузить из файла");
        jButton4.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jButton4ActionPerformed(evt);
            }
        });
        getContentPane().add(jButton4);
        jButton4.setBounds(20, 360, 180, 23);
        setSize(new java.awt.Dimension(586, 419));
        setLocationRelativeTo(null);
    }// //GEN-END:initComponents
    private void jButton3ActionPerformed(java.awt.event.ActionEvent evt) {
	//GEN-FIRST:event_jButton3ActionPerformed
        // Сохранение текста из JEditorPane в TXT-файл с помощью диалога выбора файла
        try {
            JFileChooser fileopen = new JFileChooser(); // Создаем объект выбора файла
            int ret = fileopen.showDialog(null, "Сохранить файл"); // Вызываем диалог
            if (ret != JFileChooser.APPROVE_OPTION) { return; } // Если файл не выбран, то выход
            File FileName = fileopen.getSelectedFile(); // Получение имени файла
            // Считываем содержимое документа
            PlainDocument doc = (PlainDocument) jEditorPane1.getDocument();
            OutputStreamWriter out = new OutputStreamWriter(new FileOutputStream(FileName));
            String txt = doc.getText(0, doc.getLength()); // Считываем текст из jEditorPane1
            out.write(txt); // Сохраняем текст в файл
            out.close(); // Закрываем файл
        } catch (IOException | BadLocationException ex) {
            Logger.getLogger(MainForm.class.getName()).log(Level.SEVERE, null, ex);
        }
    }//GEN-LAST:event_jButton3ActionPerformed
    private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {
	//GEN-FIRST:event_jButton1ActionPerformed
        // Очистка данных в JEditorPane
        jEditorPane1.setText("");
    }//GEN-LAST:event_jButton1ActionPerformed
    private void jButton4ActionPerformed(java.awt.event.ActionEvent evt) {
	//GEN-FIRST:event_jButton4ActionPerformed
        // Загрузка TXT-файла в JEditorPane с помощью диалога выбора файла
        try {
            JFileChooser fileopen = new JFileChooser(); // Создаем объект выбора файла
            int ret = fileopen.showDialog(null, "Открыть файл"); // Вызываем диалог
            if (ret != JFileChooser.APPROVE_OPTION) { return; } // Если файл не выбран, то выход
            File FileName = fileopen.getSelectedFile(); // Получение имени файла
            // Открываем потоки чтения из файла
            FileInputStream stream = new FileInputStream(FileName);
            InputStreamReader reader = new InputStreamReader(stream);
            BufferedReader buffered_reader = new BufferedReader(reader);
            String txt = ""; String buf; // Инициализация переменных
            // Загрузка текста из файла
            while ((buf = buffered_reader.readLine()) != null) {
                txt += buf + "\r\n";
            }
            jEditorPane1.setText(txt); // Установить считанный из файла текст в jEditorPane1
            buffered_reader.close(); reader.close(); stream.close(); // Закрытие потоков чтения
        } catch (FileNotFoundException ex) {
            Logger.getLogger(MainForm.class.getName()).log(Level.SEVERE, null, ex);
        } catch (IOException ex) {
            Logger.getLogger(MainForm.class.getName()).log(Level.SEVERE, null, ex);
        }
    }//GEN-LAST:event_jButton4ActionPerformed
    public static void main(String args[]) {
        /* Set the Nimbus look and feel */
        //
        /* If Nimbus (introduced in Java SE 6) is not available, stay with the default look and feel.
         * For details see http://download.oracle.com/javase/tutorial/uiswing/lookandfeel/plaf.html
         */
        try {
            for (javax.swing.UIManager.LookAndFeelInfo info : javax.swing.UIManager.getInstalledLookAndFeels()) {
                if ("Metal".equals(info.getName())) {
                    javax.swing.UIManager.setLookAndFeel(info.getClassName());
                    break;
                }
            }
        } catch (ClassNotFoundException ex) {
            java.util.logging.Logger.getLogger(MainForm.class
                    .getName()).log(java.util.logging.Level.SEVERE, null, ex);
        } catch (InstantiationException ex) {
            java.util.logging.Logger.getLogger(MainForm.class
                    .getName()).log(java.util.logging.Level.SEVERE, null, ex);
        } catch (IllegalAccessException ex) {
            java.util.logging.Logger.getLogger(MainForm.class
                    .getName()).log(java.util.logging.Level.SEVERE, null, ex);
        } catch (javax.swing.UnsupportedLookAndFeelException ex) {
            java.util.logging.Logger.getLogger(MainForm.class
                    .getName()).log(java.util.logging.Level.SEVERE, null, ex);
        }
        //
        /* Create and display the form */
        java.awt.EventQueue.invokeLater(new Runnable() {
            public void run() {
                new MainForm().setVisible(true);
            }
        });
    }
    // Variables declaration - do not modify//GEN-BEGIN:variables
    private javax.swing.JButton jButton1;
    private javax.swing.JButton jButton3;
    private javax.swing.JButton jButton4;
    private javax.swing.JEditorPane jEditorPane1;
    private javax.swing.JScrollPane jScrollPane1;
    // End of variables declaration//GEN-END:variables
}